Data communication in a computer network involves the exchange of data between two or more entities interconnected by communication links. The entities are typically software programs executing on hardware computer platforms, such as nodes; in particular, communication software executing on the nodes correlate and manage data communication with other nodes. The nodes typically communicate by exchanging discrete packets or frames of data according to predefined protocols. In this context, a protocol consists of a set of rules defining how the nodes interact with each other. Collectively, these hardware and software components comprise a communications network and their interconnections are defined by an underlying architecture.
Modern communications network architectures are typically organized as a series of hardware and software levels or "layers" within each nodc that interact to format data for transfer over the network. Predetermined services are performed on the data as it passes through each layer and the layers communicate with each other by means of the predefined protocols. The lower layers of these architectures are typically implemented in hardware and firmware, whereas the higher layers are generally implemented in the form of software running on the nodes attached to the network. Examples of such communications architectures include the the Internet communications architecture and the Systems Network Architecture (SNA) developed by International business Machines (IBM) Corporation.
SNA is a mainframe-oriented network architecture that includes services generally similar to those defined in the Internet communications architecture. An SNA network consists of nodes and links, wherein the nodes are network components containing protocol implementations and the links are transmission facilities that carry data between two nodes configured to operate a data link control procedure. Examples of such nodes include a host mainframe computer, a control unit and an input/output (I/O) device that provides a user interface to the network. In one embodiment of the SNA network, the control unit and I/O device may be combined within a node, such as a workstation, that is coupled to a endstation node through a network cloud, such as an SNA or Internet protocol (IP) cloud. In another embodiment, the control unit may be independent of the workstation and include a router to enable routing of data through the network to destination nodes, such as workstations.
The host is typically connected to the control unit through a high-performance communication subsystem called a mainframe channel. The channel comprises a plurality of components including an intelligent processor (i.e., channel CPU) that manages the protocol over the communications link and controls transfer of data between host (main memory) storage and I/O devices directly attached to the control unit. To that end, a channel may use one or more channel paths as the actual links between a host and the control unit. Channel paths include physical transmission links between the channel and control unit; examples of channel paths include bus-and-tag and enterprise system connection (ESCON) channel paths. Moreover, each I/O device is represented by a subchannel. A subchannel is similar to a virtual circuit in that it provides information about the associated I/O device and its attachment to the channel.
When communicating with an endstation by exchanging data packets over the channel and network, the host computer typically performs operations on the packets to ensure the accuracy of communication. An example of such an operation performed by the transport layer of a protocol stack in the host computer is a checksumming operation for certain packets, such as Transmission Control Protocol (TCP) packets and User Datagram Protocol (UDP) packets. A checksum is an error detection and recovery service that involves processing various header and information fields of a packet through an arithmetic algorithm. The checksum is typically calculated by a source node (such as a host computer) when building a TCP (or UDP) header for a packet and the resulting checksum value is loaded into the packet before transmission over a channel. Specifically, the checksum is calculated in accordance with a conventional algorithm (e.g., a TCP or UDP checksum algorithm) such that the sum of all the data, including portions of the headers, results in a checksum value that is then stored in a checksum field of a corresponding header. A destination node (which may also be a host computer) recalculates the checksum using an identical algorithm and verifies the results of the checksum algorithm. If the destination-node cannot verify the results, the received packet is considered to be in error and is discarded.
It can be appreciated that a checksum operation is a significant processing function typically performed by the host computer. However, it can also be appreciated that such processing is expensive from the point of view of the host computer receiving or sending the packets. It would be desirable to relieve the host computer of such processing and still ensure the accuracy of communication over a network; the present invention is directed to a technique by which the host computer can offload performance of such an operation to the control unit.